diff --git a/user_guide/libraries/image_lib.html b/user_guide/libraries/image_lib.html
index 1bbb842..3d42789 100644
--- a/user_guide/libraries/image_lib.html
+++ b/user_guide/libraries/image_lib.html
@@ -1,666 +1,666 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
-
-<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-<title>Image Manipulation Class : CodeIgniter User Guide</title>
-
-<style type='text/css' media='all'>@import url('../userguide.css');</style>
-<link rel='stylesheet' type='text/css' media='all' href='../userguide.css' />
-
-<script type="text/javascript" src="../nav/nav.js"></script>
-<script type="text/javascript" src="../nav/prototype.lite.js"></script>
-<script type="text/javascript" src="../nav/moo.fx.js"></script>
-<script type="text/javascript" src="../nav/user_guide_menu.js"></script>
-
-<meta http-equiv='expires' content='-1' />
-<meta http-equiv= 'pragma' content='no-cache' />
-<meta name='robots' content='all' />
-<meta name='author' content='ExpressionEngine Dev Team' />
-<meta name='description' content='CodeIgniter User Guide' />
-
-</head>
-<body>
-
-<!-- START NAVIGATION -->
-<div id="nav"><div id="nav_inner"><script type="text/javascript">create_menu('../');</script></div></div>
-<div id="nav2"><a name="top"></a><a href="javascript:void(0);" onclick="myHeight.toggle();"><img src="../images/nav_toggle_darker.jpg" width="154" height="43" border="0" title="Toggle Table of Contents" alt="Toggle Table of Contents" /></a></div>
-<div id="masthead">
-<table cellpadding="0" cellspacing="0" border="0" style="width:100%">
-<tr>
-<td><h1>CodeIgniter User Guide Version 1.7</h1></td>
-<td id="breadcrumb_right"><a href="../toc.html">Table of Contents Page</a></td>
-</tr>
-</table>
-</div>
-<!-- END NAVIGATION -->
-
-
-<!-- START BREADCRUMB -->
-<table cellpadding="0" cellspacing="0" border="0" style="width:100%">
-<tr>
-<td id="breadcrumb">
-<a href="http://codeigniter.com/">CodeIgniter Home</a> &nbsp;&#8250;&nbsp;
-<a href="../index.html">User Guide Home</a> &nbsp;&#8250;&nbsp;
-Image Manipulation Class
-</td>
-<td id="searchbox"><form method="get" action="http://www.google.com/search"><input type="hidden" name="as_sitesearch" id="as_sitesearch" value="codeigniter.com/user_guide/" />Search User Guide&nbsp; <input type="text" class="input" style="width:200px;" name="q" id="q" size="31" maxlength="255" value="" />&nbsp;<input type="submit" class="submit" name="sa" value="Go" /></form></td>
-</tr>
-</table>
-<!-- END BREADCRUMB -->
-
-<br clear="all" />
-
-
-<!-- START CONTENT -->
-<div id="content">
-
-
-<h1>Image Manipulation Class</h1>
-
-<p>CodeIgniter's Image Manipulation class lets you perform the following actions:</p>
-
-<ul>
-<li>Image Resizing</li>
-<li>Thumbnail Creation</li>
-<li>Image Cropping</li>
-<li>Image Rotating</li>
-<li>Image Watermarking</li>
-</ul>
-
-<p>All three major image libraries are supported:  GD/GD2, NetPBM, and ImageMagick</p>
-
-<p class="important"><strong>Note:</strong> Watermarking is only available using the GD/GD2 library.
-In addition, even though other libraries are supported, GD is required in
-order for the script to calculate the image properties.  The image processing, however, will be performed with the
-library you specify.</p>
-
-
-<h2>Initializing the Class</h2>
-
-<p>Like most other classes in CodeIgniter, the image class is initialized in your controller
-using the <dfn>$this->load-&gt;library</dfn> function:</p>
-<code>$this->load->library('image_lib');</code>
-
-<p>Once the library is loaded it will be ready for use.  The image library object you will use to call all functions is: <dfn>$this->image_lib</dfn></p>
-
-
-<h2>Processing an Image</h2>
-
-<p>Regardless of the type of processing you would like to perform (resizing, cropping, rotation, or watermarking), the general process is
-identical. You will set some preferences corresponding to the action you intend to perform, then
-call one of four available processing functions.  For example, to create an image thumbnail you'll do this:</p>
-
-<code>$config['image_library'] = 'gd2';<br />
-$config['source_image']	= '/path/to/image/mypic.jpg';<br />
-$config['create_thumb'] = TRUE;<br />
-$config['maintain_ratio'] = TRUE;<br />
-$config['width']		= 75;<br />
-$config['height']	= 50;<br />
-<br />
-$this->load->library('image_lib', $config);
-<br />
-<br />
-$this->image_lib->resize();</code>
-
-<p>The above code tells the <dfn>image_resize</dfn> function to look for an image called <em>mypic.jpg</em>
-located in the <dfn>source_image</dfn> folder, then create a thumbnail that is 75 X 50 pixels using the GD2 <dfn>image_library</dfn>.
-Since the <dfn>maintain_ratio</dfn> option is enabled, the thumb will be as close to the target <dfn>width</dfn> and
-<dfn>height</dfn> as possible while preserving the original aspect ratio.  The thumbnail will be called <em>mypic_thumb.jpg</em>
-</p>
-
-<p class="important"><strong>Note:</strong> In order for the image class to be allowed to do any processing, the
-folder containing the image files must have write permissions.</p>
-
-
-<h2>Processing Functions</h2>
-
-<p>There are four available processing functions:</p>
-
-<ul>
-<li>$this->image_lib->resize()</li>
-<li>$this->image_lib->crop()</li>
-<li>$this->image_lib->rotate()</li>
-<li>$this->image_lib->watermark()</li>
-<li>$this-&gt;image_lib-&gt;clear()</li>
-</ul>
-
-<p>These functions return boolean TRUE upon success and FALSE for failure.  If they fail you can retrieve the
-error message using this function:</p>
-
-<code>echo $this->image_lib->display_errors();</code>
-
-<p>A good practice is use the processing function conditionally, showing an error upon failure, like this:</p>
-
-<code>if ( ! $this->image_lib->resize())<br />
-{<br />
-&nbsp;&nbsp;&nbsp;&nbsp;echo $this->image_lib->display_errors();<br />
-}</code>
-
-<p>Note:  You can optionally specify the HTML formatting to be applied to the errors, by submitting the opening/closing
-tags in the function, like this:</p>
-
-<code>$this->image_lib->display_errors('<var>&lt;p></var>', '<var>&lt;/p></var>');</code>
-
-
-<h2>Preferences</h2>
-
-<p>The  preferences described below allow you to tailor the image processing to suit your needs.</p>
-
-<p>Note that not all preferences are available for every
-function.  For example, the x/y axis preferences are only available for image cropping. Likewise, the width and height
-preferences have no effect on cropping.  The "availability" column indicates which functions support a given preference.</p>
-
-<p>Availability Legend:</p>
-
-<ul>
-<li><var>R</var> - Image Resizing</li>
-<li><var>C</var> - Image Cropping</li>
-<li><var>X</var> - Image Rotation</li>
-<li><var>W</var> - Image Watermarking</li>
-
-</ul>
-
-
-
-
-
-<table cellpadding="0" cellspacing="1" border="0" style="width:100%" class="tableborder">
-<tr>
-<th>Preference</th>
-<th>Default&nbsp;Value</th>
-<th>Options</th>
-<th>Description</th>
-<th>Availability</th>
-</tr>
-
-<tr>
-<td class="td"><strong>image_library</strong></td>
-<td class="td">GD2</td>
-<td class="td">GD, GD2, ImageMagick, NetPBM</td>
-<td class="td">Sets the image library to be used.</td>
-<td class="td">R, C, X, W</td>
-</tr>
-
-<tr>
-<td class="td"><strong>library_path</strong></td>
-<td class="td">None</td>
-<td class="td">None</td>
-<td class="td">Sets the server path to your ImageMagick or NetPBM library.  If you use either of those libraries you must supply the path.</td>
-<td class="td">R, C, X</td>
-</tr>
-
-<tr>
-<td class="td"><strong>source_image</strong></td>
-<td class="td">None</td>
-<td class="td">None</td>
-<td class="td">Sets the source image name/path.  The path must be a relative or absolute server path, not a URL.</td>
-<td class="td">R, C, S, W</td>
-</tr>
-
-<tr>
-<td class="td"><strong>dynamic_output</strong></td>
-<td class="td">FALSE</td>
-<td class="td">TRUE/FALSE (boolean)</td>
-<td class="td">Determines whether the new image file should be written to disk or generated dynamically.  Note: If you choose the dynamic setting, only one image can be shown at a time, and it can't be positioned on the page. It simply outputs the raw image dynamically to your browser, along with image headers.</td>
-<td class="td">R, C, X, W</td>
-</tr>
-
-
-<tr>
-<td class="td"><strong>quality</strong></td>
-<td class="td">90%</td>
-<td class="td">1 - 100%</td>
-<td class="td">Sets the quality of the image. The higher the quality the larger the file size.</td>
-<td class="td">R, C, X, W</td>
-</tr>
-
-
-<tr>
-<td class="td"><strong>new_image</strong></td>
-<td class="td">None</td>
-<td class="td">None</td>
-<td class="td">Sets the destination image name/path.  You'll use this preference when creating an image copy. The path must be a relative or absolute server path, not a URL.</td>
-<td class="td">R, C, X, W</td>
-</tr>
-
-<tr>
-<td class="td"><strong>width</strong></td>
-<td class="td">None</td>
-<td class="td">None</td>
-<td class="td">Sets the width you would like the image set to.</td>
-<td class="td">R, C </td>
-</tr>
-
-<tr>
-<td class="td"><strong>height</strong></td>
-<td class="td">None</td>
-<td class="td">None</td>
-<td class="td">Sets the height you would like the image set to.</td>
-<td class="td">R, C </td>
-</tr>
-
-<tr>
-<td class="td"><strong>create_thumb</strong></td>
-<td class="td">FALSE</td>
-<td class="td">TRUE/FALSE (boolean)</td>
-<td class="td">Tells the image processing function to create a thumb.</td>
-<td class="td">R</td>
-</tr>
-
-<tr>
-<td class="td"><strong>thumb_marker</strong></td>
-<td class="td">_thumb</td>
-<td class="td">None</td>
-<td class="td">Specifies the thumbnail indicator.  It will be inserted just before the file extension, so mypic.jpg would become mypic_thumb.jpg</td>
-<td class="td">R</td>
-</tr>
-
-<tr>
-<td class="td"><strong>maintain_ratio</strong></td>
-<td class="td">TRUE</td>
-<td class="td">TRUE/FALSE (boolean)</td>
-<td class="td">Specifies whether to maintain the original aspect ratio when resizing or use hard values.</td>
-<td class="td">R, C</td>
-</tr>
-
-
-<tr>
-<td class="td"><strong>master_dim</strong></td>
-<td class="td">auto</td>
-<td class="td">auto, width, height</td>
-<td class="td">Specifies what to use as the master axis when resizing or creating thumbs. For example, let's say you want to resize an image to 100 X 75 pixels. If the source image size does not allow perfect resizing to those dimensions, this setting determines which axis should be used as the hard value. "auto" sets the axis automatically based on whether the image is taller then wider, or vice versa.</td>
-<td class="td">R</td>
-</tr>
-
-
-
-
-<tr>
-<td class="td"><strong>rotation_angle</strong></td>
-<td class="td">None</td>
-<td class="td">90, 180, 270, vrt, hor</td>
-<td class="td">Specifies the angle of rotation when rotating images.  Note that PHP rotates counter-clockwise, so a 90 degree rotation to the right must be specified as 270.</td>
-<td class="td">X</td>
-</tr>
-
-<tr>
-<td class="td"><strong>x_axis</strong></td>
-<td class="td">None</td>
-<td class="td">None</td>
-<td class="td">Sets the X coordinate in pixels for image cropping. For example, a setting of 30 will crop an image 30 pixels from the left.</td>
-<td class="td">C</td>
-</tr>
-<tr>
-<td class="td"><strong>y_axis</strong></td>
-<td class="td">None</td>
-<td class="td">None</td>
-<td class="td">Sets the Y coordinate in pixels for image cropping. For example, a setting of 30 will crop an image 30 pixels from the top.</td>
-<td class="td">C</td>
-</tr>
-
-</table>
-
-
-<h2>Setting preferences in a config file</h2>
-
-<p>If you prefer not to set preferences using the above method, you can instead put them into a config file.
-Simply create a new file called <var>image_lib.php</var>,  add the <var>$config</var>
-array in that file. Then save the file in: <var>config/image_lib.php</var> and it will be used automatically. You
-will NOT need to use the <dfn>$this->image_lib->initialize</dfn> function if you save your preferences in a config file.</p>
-
-
-<h2>$this->image_lib->resize()</h2>
-
-<p>The image resizing function lets you resize the original image, create a copy (with or without resizing),
-or create a thumbnail image.</p>
-
-<p>For practical purposes there is no difference between creating a copy and creating
-a thumbnail except a thumb will have the thumbnail marker as part of the name (ie, mypic_thumb.jpg).</p>
-
-<p>All preferences listed in the table above are available for this function except these three:  rotation_angle, x_axis, and y_axis.</p>
-
-<h3>Creating a Thumbnail</h3>
-
-<p>The resizing function will create a thumbnail file (and preserve the original) if you set this preference to TRUE:</p>
-
-<code>$config['create_thumb'] = TRUE;</code>
-
-<p>This single preference determines whether a thumbnail is created or not.</p>
-
-<h3>Creating a Copy</h3>
-
-<p>The resizing function will create a copy of the image file (and preserve the original) if you set
-a path and/or a new filename using this preference:</p>
-
-<code>$config['new_image'] = '/path/to/new_image.jpg';</code>
-
-<p>Notes regarding this preference:</p>
-<ul>
-<li>If only the new image name is specified it will be placed in the same folder as the original</li>
-<li>If only the path is specified, the new image will be placed in the destination with the same name as the original.</li>
-<li>If both the path and image name are specified it will placed in its own destination and given the new name.</li>
-</ul>
-
-
-<h3>Resizing the Original Image</h3>
-
-<p>If neither of the two preferences listed above (create_thumb, and new_image) are used, the resizing function will instead
-target the original image for processing.</p>
-
-
-<h2>$this->image_lib->crop()</h2>
-
-<p>The cropping function works nearly identically to the resizing function except it requires that you set
-preferences for the X and Y axis (in pixels) specifying where to crop, like this:</p>
-
-<code>$config['x_axis'] = '100';<br />
-$config['y_axis'] = '40';</code>
-
-<p>All preferences listed in the table above are available for this function except these:  rotation_angle, width, height, create_thumb, new_image.</p>
-
-<p>Here's an example showing how you might crop an image:</p>
-
-<code>$config['image_library'] = 'imagemagick';<br />
-$config['library_path'] = '/usr/X11R6/bin/';<br />
-$config['source_image']	= '/path/to/image/mypic.jpg';<br />
-$config['x_axis'] = '100';<br />
-$config['y_axis'] = '60';<br />
-<br />
-$this->image_lib->initialize($config);
-<br />
-<br />
-if ( ! $this->image_lib->crop())<br />
-{<br />
-&nbsp;&nbsp;&nbsp;&nbsp;echo $this->image_lib->display_errors();<br />
-}</code>
-
-
-<p>Note: Without a visual interface it is difficult to crop images, so this function is not very useful
-unless you intend to build such an interface.  That's exactly what we did using for the photo
-gallery module in ExpressionEngine, the CMS we develop.  We added a JavaScript UI that lets the cropping
-area be selected.</p>
-
-<h2>$this->image_lib->rotate()</h2>
-
-<p>The image rotation function requires that the angle of rotation be set via its preference:</p>
-
-<code>$config['rotation_angle'] = '90';</code>
-
-<p>There are 5 rotation options:</p>
-
-<ol>
-<li>90 - rotates counter-clockwise by 90 degrees.</li>
-<li>180 - rotates counter-clockwise by 180 degrees.</li>
-<li>270 - rotates counter-clockwise by 270 degrees.</li>
-<li>hor - flips the image horizontally.</li>
-<li>vrt - flips the image vertically.</li>
-</ol>
-
-<p>Here's an example showing how you might rotate an image:</p>
-
-<code>$config['image_library'] = 'netpbm';<br />
-$config['library_path'] = '/usr/bin/';<br />
-$config['source_image']	= '/path/to/image/mypic.jpg';<br />
-$config['rotation_angle'] = 'hor';<br />
-<br />
-$this->image_lib->initialize($config);
-<br />
-<br />
-if ( ! $this->image_lib->rotate())<br />
-{<br />
-&nbsp;&nbsp;&nbsp;&nbsp;echo $this->image_lib->display_errors();<br />
-}</code>
-
-
-
-<h2>$this-&gt;image_lib-&gt;clear()</h2>
-<p>The clear function resets all of the values used when processing an image. You will want to call this if you are processing images in a loop.</p>
-<p><code>$this-&gt;image_lib-&gt;clear();</code></p>
-<p>&nbsp;</p>
-<h1>Image Watermarking</h1>
-
-<p>The Watermarking feature requires the GD/GD2 library.</p>
-
-
-<h2>Two Types of Watermarking</h2>
-
-<p>There are two types of watermarking that you can use:</p>
-
-<ul>
-<li><strong>Text</strong>: The watermark message will be generating using text, either with a True Type font that you specify, or
-using the native text output that the GD library supports. If you use the True Type version your GD installation
-must be compiled with True Type support (most are, but not all).</li>
-
-<li><strong>Overlay</strong>: The watermark message will be generated by overlaying an image (usually a transparent PNG or GIF)
-containing your watermark over the source image.</li>
-
-</ul>
-
-
-<h2>Watermarking an Image</h2>
-
-<p>Just as with the other functions (resizing, cropping, and rotating) the general process for watermarking
-involves setting the preferences corresponding to the action you intend to perform, then
-calling the watermark function.  Here is an example:</p>
-
-<code>
-$config['source_image']	= '/path/to/image/mypic.jpg';<br />
-$config['wm_text'] = 'Copyright 2006 - John Doe';<br />	
-$config['wm_type'] = 'text';<br />
-$config['wm_font_path'] = './system/fonts/texb.ttf';<br />
-$config['wm_font_size']	= '16';<br />
-$config['wm_font_color'] = 'ffffff';<br />
-$config['wm_vrt_alignment']  = 'bottom';<br />
-$config['wm_hor_alignment']  = 'center';<br />
-$config['wm_padding']  = '20';<br />
-<br />
-$this->image_lib->initialize($config);
-<br />
-<br />
-$this->image_lib->watermark();</code>
-
-
-<p>The above example will use a 16 pixel True Type font to create the text "Copyright 2006 - John Doe".  The watermark
-will be positioned at the bottom/center of the image, 20 pixels from the bottom of the image.</p>
-
-<p class="important"><strong>Note:</strong> In order for the image class to be allowed to do any processing, the image file must have &quot;write&quot; file permissions. For example, 777.</p>
-
-
-<h2>Watermarking Preferences</h2>
-
-<p>This table shown the preferences that are available for both types of watermarking (text or overlay)</p>
-
-<table cellpadding="0" cellspacing="1" border="0" style="width:100%" class="tableborder">
-<tr>
-<th>Preference</th>
-<th>Default&nbsp;Value</th>
-<th>Options</th>
-<th>Description</th>
-</tr>
-
-<tr>
-<td class="td"><strong>wm_type</strong></td>
-<td class="td">text</td>
-<td class="td">text, overlay</td>
-<td class="td">Sets the type of watermarking that should be used.</td>
-</tr>
-
-<tr>
-<td class="td"><strong>source_image</strong></td>
-<td class="td">None</td>
-<td class="td">None</td>
-<td class="td">Sets the source image name/path.  The path must be a relative or absolute server path, not a URL.</td>
-</tr>
-
-<tr>
-<td class="td"><strong>dynamic_output</strong></td>
-<td class="td">FALSE</td>
-<td class="td">TRUE/FALSE (boolean)</td>
-<td class="td">Determines whether the new image file should be written to disk or generated dynamically.  Note: If you choose the dynamic setting, only one image can be shown at a time, and it can't be positioned on the page. It simply outputs the raw image dynamically to your browser, along with image headers.</td>
-</tr>
-
-<tr>
-<td class="td"><strong>quality</strong></td>
-<td class="td">90%</td>
-<td class="td">1 - 100%</td>
-<td class="td">Sets the quality of the image. The higher the quality the larger the file size.</td>
-</tr>
-
-<tr>
-<td class="td"><strong>padding</strong></td>
-<td class="td">None</td>
-<td class="td">A number</td>
-<td class="td">The amount of padding, set in pixels, that will be applied to the watermark to set it away from the edge of your images.</td>
-</tr>
-
-<tr>
-<td class="td"><strong>wm_vrt_alignment</strong></td>
-<td class="td">bottom</td>
-<td class="td">top, middle, bottom</td>
-<td class="td">Sets the vertical alignment for the watermark image.</td>
-</tr>
-
-<tr>
-<td class="td"><strong>wm_hor_alignment</strong></td>
-<td class="td">center</td>
-<td class="td">left, center, right</td>
-<td class="td">Sets the horizontal alignment for the watermark image.</td>
-</tr>
-
-<tr>
-<td class="td"><strong>wm_hor_offset</strong></td>
-<td class="td">None</td>
-<td class="td">None</td>
-<td class="td">You may specify a horizontal offset (in pixels) to apply to the watermark position. The offset normally moves the watermark to the right, except if you have your alignment set to "right" then your offset value will move the watermark toward the left of the image.</td>
-</tr>
-
-<tr>
-<td class="td"><strong>wm_vrt_offset</strong></td>
-<td class="td">None</td>
-<td class="td">None</td>
-<td class="td">You may specify a vertical offset (in pixels) to apply to the watermark position. The offset normally moves the watermark down, except if you have your alignment set to "bottom" then your offset value will move the watermark toward the top of the image.</td>
-</tr>
-
-</table>
-
-
-
-<h3>Text Preferences</h3>
-<p>This table shown the preferences that are available for the text type of watermarking.</p>
-
-
-<table cellpadding="0" cellspacing="1" border="0" style="width:100%" class="tableborder">
-<tr>
-<th>Preference</th>
-<th>Default&nbsp;Value</th>
-<th>Options</th>
-<th>Description</th>
-</tr>
-
-<tr>
-<td class="td"><strong>wm_text</strong></td>
-<td class="td">None</td>
-<td class="td">None</td>
-<td class="td">The text you would like shown as the watermark.  Typically this will be a copyright notice.</td>
-</tr>
-
-<tr>
-<td class="td"><strong>wm_font_path</strong></td>
-<td class="td">None</td>
-<td class="td">None</td>
-<td class="td">The server path to the True Type Font you would like to use.  If you do not use this option, the native GD font will be used.</td>
-</tr>
-
-<tr>
-<td class="td"><strong>wm_font_size</strong></td>
-<td class="td">16</td>
-<td class="td">None</td>
-<td class="td">The size of the text.  Note: If you are not using the True Type option above, the number is set using a range of 1 - 5.  Otherwise, you can use any valid pixel size for the font you're using.</td>
-</tr>
-
-<tr>
-<td class="td"><strong>wm_font_color</strong></td>
-<td class="td">ffffff</td>
-<td class="td">None</td>
-<td class="td">The font color, specified in hex.  Note, you must use the full 6 character hex value (ie, 993300), rather than the three character abbreviated version (ie fff).</td>
-</tr>
-
-
-<tr>
-<td class="td"><strong>wm_shadow_color</strong></td>
-<td class="td">None</td>
-<td class="td">None</td>
-<td class="td">The color of the drop shadow, specified in hex. If you leave this blank a drop shadow will not be used. Note, you must use the full 6 character hex value (ie, 993300), rather than the three character abbreviated version (ie fff).</td>
-</tr>
-
-<tr>
-<td class="td"><strong>wm_shadow_distance</strong></td>
-<td class="td">3</td>
-<td class="td">None</td>
-<td class="td">The distance (in pixels) from the font that the drop shadow should appear.</td>
-</tr>
-
-</table>
-
-
-
-
-<h3>Overlay Preferences</h3>
-<p>This table shown the preferences that are available for the overlay type of watermarking.</p>
-
-
-<table cellpadding="0" cellspacing="1" border="0" style="width:100%" class="tableborder">
-<tr>
-<th>Preference</th>
-<th>Default&nbsp;Value</th>
-<th>Options</th>
-<th>Description</th>
-</tr>
-
-<tr>
-<td class="td"><strong>wm_overlay_path</strong></td>
-<td class="td">None</td>
-<td class="td">None</td>
-<td class="td">The server path to the image you wish to use as your watermark. Required only if you are using the overlay method.</td>
-</tr>
-
-<tr>
-<td class="td"><strong>wm_opacity</strong></td>
-<td class="td">50</td>
-<td class="td">1 - 100</td>
-<td class="td">Image opacity. You may specify the opacity (i.e. transparency) of your watermark image. This allows the watermark to be faint and not completely obscure the details from the original image behind it. A 50% opacity is typical.</td>
-</tr>
-
-<tr>
-<td class="td"><strong>wm_x_transp</strong></td>
-<td class="td">4</td>
-<td class="td">A number</td>
-<td class="td">If your watermark image is a PNG or GIF image, you may specify a color on the image to be "transparent". This setting (along with the next) will allow you to specify that color. This works by specifying the "X" and "Y" coordinate pixel (measured from the upper left) within the image that corresponds to a pixel representative of the color you want to be transparent.</td>
-</tr>
-
-<tr>
-<td class="td"><strong>wm_y_transp</strong></td>
-<td class="td">4</td>
-<td class="td">A number</td>
-<td class="td">Along with the previous setting, this allows you to specify the coordinate to a pixel representative of the color you want to be transparent.</td>
-</tr>
-</table>
-
-</div>
-<!-- END CONTENT -->
-
-
-<div id="footer">
-<p>
-Previous Topic:&nbsp;&nbsp;<a href="table.html">HTML Table Class</a>
-&nbsp;&nbsp;&nbsp;&middot;&nbsp;&nbsp;
-<a href="#top">Top of Page</a>&nbsp;&nbsp;&nbsp;&middot;&nbsp;&nbsp;
-<a href="../index.html">User Guide Home</a>&nbsp;&nbsp;&nbsp;&middot;&nbsp;&nbsp;
-Next Topic:&nbsp;&nbsp;<a href="input.html">Input Class</a>
-</p>
-<p><a href="http://codeigniter.com">CodeIgniter</a> &nbsp;&middot;&nbsp; Copyright &#169; 2006-2008 &nbsp;&middot;&nbsp; <a href="http://ellislab.com/">Ellislab, Inc.</a></p>
-</div>
-
-</body>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+<title>Image Manipulation Class : CodeIgniter User Guide</title>
+
+<style type='text/css' media='all'>@import url('../userguide.css');</style>
+<link rel='stylesheet' type='text/css' media='all' href='../userguide.css' />
+
+<script type="text/javascript" src="../nav/nav.js"></script>
+<script type="text/javascript" src="../nav/prototype.lite.js"></script>
+<script type="text/javascript" src="../nav/moo.fx.js"></script>
+<script type="text/javascript" src="../nav/user_guide_menu.js"></script>
+
+<meta http-equiv='expires' content='-1' />
+<meta http-equiv= 'pragma' content='no-cache' />
+<meta name='robots' content='all' />
+<meta name='author' content='ExpressionEngine Dev Team' />
+<meta name='description' content='CodeIgniter User Guide' />
+
+</head>
+<body>
+
+<!-- START NAVIGATION -->
+<div id="nav"><div id="nav_inner"><script type="text/javascript">create_menu('../');</script></div></div>
+<div id="nav2"><a name="top"></a><a href="javascript:void(0);" onclick="myHeight.toggle();"><img src="../images/nav_toggle_darker.jpg" width="154" height="43" border="0" title="Toggle Table of Contents" alt="Toggle Table of Contents" /></a></div>
+<div id="masthead">
+<table cellpadding="0" cellspacing="0" border="0" style="width:100%">
+<tr>
+<td><h1>CodeIgniter User Guide Version 1.7</h1></td>
+<td id="breadcrumb_right"><a href="../toc.html">Table of Contents Page</a></td>
+</tr>
+</table>
+</div>
+<!-- END NAVIGATION -->
+
+
+<!-- START BREADCRUMB -->
+<table cellpadding="0" cellspacing="0" border="0" style="width:100%">
+<tr>
+<td id="breadcrumb">
+<a href="http://codeigniter.com/">CodeIgniter Home</a> &nbsp;&#8250;&nbsp;
+<a href="../index.html">User Guide Home</a> &nbsp;&#8250;&nbsp;
+Image Manipulation Class
+</td>
+<td id="searchbox"><form method="get" action="http://www.google.com/search"><input type="hidden" name="as_sitesearch" id="as_sitesearch" value="codeigniter.com/user_guide/" />Search User Guide&nbsp; <input type="text" class="input" style="width:200px;" name="q" id="q" size="31" maxlength="255" value="" />&nbsp;<input type="submit" class="submit" name="sa" value="Go" /></form></td>
+</tr>
+</table>
+<!-- END BREADCRUMB -->
+
+<br clear="all" />
+
+
+<!-- START CONTENT -->
+<div id="content">
+
+
+<h1>Image Manipulation Class</h1>
+
+<p>CodeIgniter's Image Manipulation class lets you perform the following actions:</p>
+
+<ul>
+<li>Image Resizing</li>
+<li>Thumbnail Creation</li>
+<li>Image Cropping</li>
+<li>Image Rotating</li>
+<li>Image Watermarking</li>
+</ul>
+
+<p>All three major image libraries are supported:  GD/GD2, NetPBM, and ImageMagick</p>
+
+<p class="important"><strong>Note:</strong> Watermarking is only available using the GD/GD2 library.
+In addition, even though other libraries are supported, GD is required in
+order for the script to calculate the image properties.  The image processing, however, will be performed with the
+library you specify.</p>
+
+
+<h2>Initializing the Class</h2>
+
+<p>Like most other classes in CodeIgniter, the image class is initialized in your controller
+using the <dfn>$this->load-&gt;library</dfn> function:</p>
+<code>$this->load->library('image_lib');</code>
+
+<p>Once the library is loaded it will be ready for use.  The image library object you will use to call all functions is: <dfn>$this->image_lib</dfn></p>
+
+
+<h2>Processing an Image</h2>
+
+<p>Regardless of the type of processing you would like to perform (resizing, cropping, rotation, or watermarking), the general process is
+identical. You will set some preferences corresponding to the action you intend to perform, then
+call one of four available processing functions.  For example, to create an image thumbnail you'll do this:</p>
+
+<code>$config['image_library'] = 'gd2';<br />
+$config['source_image']	= '/path/to/image/mypic.jpg';<br />
+$config['create_thumb'] = TRUE;<br />
+$config['maintain_ratio'] = TRUE;<br />
+$config['width']		= 75;<br />
+$config['height']	= 50;<br />
+<br />
+$this->load->library('image_lib', $config);
+<br />
+<br />
+$this->image_lib->resize();</code>
+
+<p>The above code tells the <dfn>image_resize</dfn> function to look for an image called <em>mypic.jpg</em>
+located in the <dfn>source_image</dfn> folder, then create a thumbnail that is 75 X 50 pixels using the GD2 <dfn>image_library</dfn>.
+Since the <dfn>maintain_ratio</dfn> option is enabled, the thumb will be as close to the target <dfn>width</dfn> and
+<dfn>height</dfn> as possible while preserving the original aspect ratio.  The thumbnail will be called <em>mypic_thumb.jpg</em>
+</p>
+
+<p class="important"><strong>Note:</strong> In order for the image class to be allowed to do any processing, the
+folder containing the image files must have write permissions.</p>
+
+
+<h2>Processing Functions</h2>
+
+<p>There are four available processing functions:</p>
+
+<ul>
+<li>$this->image_lib->resize()</li>
+<li>$this->image_lib->crop()</li>
+<li>$this->image_lib->rotate()</li>
+<li>$this->image_lib->watermark()</li>
+<li>$this-&gt;image_lib-&gt;clear()</li>
+</ul>
+
+<p>These functions return boolean TRUE upon success and FALSE for failure.  If they fail you can retrieve the
+error message using this function:</p>
+
+<code>echo $this->image_lib->display_errors();</code>
+
+<p>A good practice is use the processing function conditionally, showing an error upon failure, like this:</p>
+
+<code>if ( ! $this->image_lib->resize())<br />
+{<br />
+&nbsp;&nbsp;&nbsp;&nbsp;echo $this->image_lib->display_errors();<br />
+}</code>
+
+<p>Note:  You can optionally specify the HTML formatting to be applied to the errors, by submitting the opening/closing
+tags in the function, like this:</p>
+
+<code>$this->image_lib->display_errors('<var>&lt;p></var>', '<var>&lt;/p></var>');</code>
+
+
+<h2>Preferences</h2>
+
+<p>The  preferences described below allow you to tailor the image processing to suit your needs.</p>
+
+<p>Note that not all preferences are available for every
+function.  For example, the x/y axis preferences are only available for image cropping. Likewise, the width and height
+preferences have no effect on cropping.  The "availability" column indicates which functions support a given preference.</p>
+
+<p>Availability Legend:</p>
+
+<ul>
+<li><var>R</var> - Image Resizing</li>
+<li><var>C</var> - Image Cropping</li>
+<li><var>X</var> - Image Rotation</li>
+<li><var>W</var> - Image Watermarking</li>
+
+</ul>
+
+
+
+
+
+<table cellpadding="0" cellspacing="1" border="0" style="width:100%" class="tableborder">
+<tr>
+<th>Preference</th>
+<th>Default&nbsp;Value</th>
+<th>Options</th>
+<th>Description</th>
+<th>Availability</th>
+</tr>
+
+<tr>
+<td class="td"><strong>image_library</strong></td>
+<td class="td">GD2</td>
+<td class="td">GD, GD2, ImageMagick, NetPBM</td>
+<td class="td">Sets the image library to be used.</td>
+<td class="td">R, C, X, W</td>
+</tr>
+
+<tr>
+<td class="td"><strong>library_path</strong></td>
+<td class="td">None</td>
+<td class="td">None</td>
+<td class="td">Sets the server path to your ImageMagick or NetPBM library.  If you use either of those libraries you must supply the path.</td>
+<td class="td">R, C, X</td>
+</tr>
+
+<tr>
+<td class="td"><strong>source_image</strong></td>
+<td class="td">None</td>
+<td class="td">None</td>
+<td class="td">Sets the source image name/path.  The path must be a relative or absolute server path, not a URL.</td>
+<td class="td">R, C, S, W</td>
+</tr>
+
+<tr>
+<td class="td"><strong>dynamic_output</strong></td>
+<td class="td">FALSE</td>
+<td class="td">TRUE/FALSE (boolean)</td>
+<td class="td">Determines whether the new image file should be written to disk or generated dynamically.  Note: If you choose the dynamic setting, only one image can be shown at a time, and it can't be positioned on the page. It simply outputs the raw image dynamically to your browser, along with image headers.</td>
+<td class="td">R, C, X, W</td>
+</tr>
+
+
+<tr>
+<td class="td"><strong>quality</strong></td>
+<td class="td">90%</td>
+<td class="td">1 - 100%</td>
+<td class="td">Sets the quality of the image. The higher the quality the larger the file size.</td>
+<td class="td">R, C, X, W</td>
+</tr>
+
+
+<tr>
+<td class="td"><strong>new_image</strong></td>
+<td class="td">None</td>
+<td class="td">None</td>
+<td class="td">Sets the destination image name/path.  You'll use this preference when creating an image copy. The path must be a relative or absolute server path, not a URL.</td>
+<td class="td">R, C, X, W</td>
+</tr>
+
+<tr>
+<td class="td"><strong>width</strong></td>
+<td class="td">None</td>
+<td class="td">None</td>
+<td class="td">Sets the width you would like the image set to.</td>
+<td class="td">R, C </td>
+</tr>
+
+<tr>
+<td class="td"><strong>height</strong></td>
+<td class="td">None</td>
+<td class="td">None</td>
+<td class="td">Sets the height you would like the image set to.</td>
+<td class="td">R, C </td>
+</tr>
+
+<tr>
+<td class="td"><strong>create_thumb</strong></td>
+<td class="td">FALSE</td>
+<td class="td">TRUE/FALSE (boolean)</td>
+<td class="td">Tells the image processing function to create a thumb.</td>
+<td class="td">R</td>
+</tr>
+
+<tr>
+<td class="td"><strong>thumb_marker</strong></td>
+<td class="td">_thumb</td>
+<td class="td">None</td>
+<td class="td">Specifies the thumbnail indicator.  It will be inserted just before the file extension, so mypic.jpg would become mypic_thumb.jpg</td>
+<td class="td">R</td>
+</tr>
+
+<tr>
+<td class="td"><strong>maintain_ratio</strong></td>
+<td class="td">TRUE</td>
+<td class="td">TRUE/FALSE (boolean)</td>
+<td class="td">Specifies whether to maintain the original aspect ratio when resizing or use hard values.</td>
+<td class="td">R, C</td>
+</tr>
+
+
+<tr>
+<td class="td"><strong>master_dim</strong></td>
+<td class="td">auto</td>
+<td class="td">auto, width, height</td>
+<td class="td">Specifies what to use as the master axis when resizing or creating thumbs. For example, let's say you want to resize an image to 100 X 75 pixels. If the source image size does not allow perfect resizing to those dimensions, this setting determines which axis should be used as the hard value. "auto" sets the axis automatically based on whether the image is taller then wider, or vice versa.</td>
+<td class="td">R</td>
+</tr>
+
+
+
+
+<tr>
+<td class="td"><strong>rotation_angle</strong></td>
+<td class="td">None</td>
+<td class="td">90, 180, 270, vrt, hor</td>
+<td class="td">Specifies the angle of rotation when rotating images.  Note that PHP rotates counter-clockwise, so a 90 degree rotation to the right must be specified as 270.</td>
+<td class="td">X</td>
+</tr>
+
+<tr>
+<td class="td"><strong>x_axis</strong></td>
+<td class="td">None</td>
+<td class="td">None</td>
+<td class="td">Sets the X coordinate in pixels for image cropping. For example, a setting of 30 will crop an image 30 pixels from the left.</td>
+<td class="td">C</td>
+</tr>
+<tr>
+<td class="td"><strong>y_axis</strong></td>
+<td class="td">None</td>
+<td class="td">None</td>
+<td class="td">Sets the Y coordinate in pixels for image cropping. For example, a setting of 30 will crop an image 30 pixels from the top.</td>
+<td class="td">C</td>
+</tr>
+
+</table>
+
+
+<h2>Setting preferences in a config file</h2>
+
+<p>If you prefer not to set preferences using the above method, you can instead put them into a config file.
+Simply create a new file called <var>image_lib.php</var>,  add the <var>$config</var>
+array in that file. Then save the file in: <var>config/image_lib.php</var> and it will be used automatically. You
+will NOT need to use the <dfn>$this->image_lib->initialize</dfn> function if you save your preferences in a config file.</p>
+
+
+<h2>$this->image_lib->resize()</h2>
+
+<p>The image resizing function lets you resize the original image, create a copy (with or without resizing),
+or create a thumbnail image.</p>
+
+<p>For practical purposes there is no difference between creating a copy and creating
+a thumbnail except a thumb will have the thumbnail marker as part of the name (ie, mypic_thumb.jpg).</p>
+
+<p>All preferences listed in the table above are available for this function except these three:  rotation_angle, x_axis, and y_axis.</p>
+
+<h3>Creating a Thumbnail</h3>
+
+<p>The resizing function will create a thumbnail file (and preserve the original) if you set this preference to TRUE:</p>
+
+<code>$config['create_thumb'] = TRUE;</code>
+
+<p>This single preference determines whether a thumbnail is created or not.</p>
+
+<h3>Creating a Copy</h3>
+
+<p>The resizing function will create a copy of the image file (and preserve the original) if you set
+a path and/or a new filename using this preference:</p>
+
+<code>$config['new_image'] = '/path/to/new_image.jpg';</code>
+
+<p>Notes regarding this preference:</p>
+<ul>
+<li>If only the new image name is specified it will be placed in the same folder as the original</li>
+<li>If only the path is specified, the new image will be placed in the destination with the same name as the original.</li>
+<li>If both the path and image name are specified it will placed in its own destination and given the new name.</li>
+</ul>
+
+
+<h3>Resizing the Original Image</h3>
+
+<p>If neither of the two preferences listed above (create_thumb, and new_image) are used, the resizing function will instead
+target the original image for processing.</p>
+
+
+<h2>$this->image_lib->crop()</h2>
+
+<p>The cropping function works nearly identically to the resizing function except it requires that you set
+preferences for the X and Y axis (in pixels) specifying where to crop, like this:</p>
+
+<code>$config['x_axis'] = '100';<br />
+$config['y_axis'] = '40';</code>
+
+<p>All preferences listed in the table above are available for this function except these:  rotation_angle, width, height, create_thumb, new_image.</p>
+
+<p>Here's an example showing how you might crop an image:</p>
+
+<code>$config['image_library'] = 'imagemagick';<br />
+$config['library_path'] = '/usr/X11R6/bin/';<br />
+$config['source_image']	= '/path/to/image/mypic.jpg';<br />
+$config['x_axis'] = '100';<br />
+$config['y_axis'] = '60';<br />
+<br />
+$this->image_lib->initialize($config);
+<br />
+<br />
+if ( ! $this->image_lib->crop())<br />
+{<br />
+&nbsp;&nbsp;&nbsp;&nbsp;echo $this->image_lib->display_errors();<br />
+}</code>
+
+
+<p>Note: Without a visual interface it is difficult to crop images, so this function is not very useful
+unless you intend to build such an interface.  That's exactly what we did using for the photo
+gallery module in ExpressionEngine, the CMS we develop.  We added a JavaScript UI that lets the cropping
+area be selected.</p>
+
+<h2>$this->image_lib->rotate()</h2>
+
+<p>The image rotation function requires that the angle of rotation be set via its preference:</p>
+
+<code>$config['rotation_angle'] = '90';</code>
+
+<p>There are 5 rotation options:</p>
+
+<ol>
+<li>90 - rotates counter-clockwise by 90 degrees.</li>
+<li>180 - rotates counter-clockwise by 180 degrees.</li>
+<li>270 - rotates counter-clockwise by 270 degrees.</li>
+<li>hor - flips the image horizontally.</li>
+<li>vrt - flips the image vertically.</li>
+</ol>
+
+<p>Here's an example showing how you might rotate an image:</p>
+
+<code>$config['image_library'] = 'netpbm';<br />
+$config['library_path'] = '/usr/bin/';<br />
+$config['source_image']	= '/path/to/image/mypic.jpg';<br />
+$config['rotation_angle'] = 'hor';<br />
+<br />
+$this->image_lib->initialize($config);
+<br />
+<br />
+if ( ! $this->image_lib->rotate())<br />
+{<br />
+&nbsp;&nbsp;&nbsp;&nbsp;echo $this->image_lib->display_errors();<br />
+}</code>
+
+
+
+<h2>$this-&gt;image_lib-&gt;clear()</h2>
+<p>The clear function resets all of the values used when processing an image. You will want to call this if you are processing images in a loop.</p>
+<p><code>$this-&gt;image_lib-&gt;clear();</code></p>
+<p>&nbsp;</p>
+<h1>Image Watermarking</h1>
+
+<p>The Watermarking feature requires the GD/GD2 library.</p>
+
+
+<h2>Two Types of Watermarking</h2>
+
+<p>There are two types of watermarking that you can use:</p>
+
+<ul>
+<li><strong>Text</strong>: The watermark message will be generating using text, either with a True Type font that you specify, or
+using the native text output that the GD library supports. If you use the True Type version your GD installation
+must be compiled with True Type support (most are, but not all).</li>
+
+<li><strong>Overlay</strong>: The watermark message will be generated by overlaying an image (usually a transparent PNG or GIF)
+containing your watermark over the source image.</li>
+
+</ul>
+
+
+<h2>Watermarking an Image</h2>
+
+<p>Just as with the other functions (resizing, cropping, and rotating) the general process for watermarking
+involves setting the preferences corresponding to the action you intend to perform, then
+calling the watermark function.  Here is an example:</p>
+
+<code>
+$config['source_image']	= '/path/to/image/mypic.jpg';<br />
+$config['wm_text'] = 'Copyright 2006 - John Doe';<br />	
+$config['wm_type'] = 'text';<br />
+$config['wm_font_path'] = './system/fonts/texb.ttf';<br />
+$config['wm_font_size']	= '16';<br />
+$config['wm_font_color'] = 'ffffff';<br />
+$config['wm_vrt_alignment']  = 'bottom';<br />
+$config['wm_hor_alignment']  = 'center';<br />
+$config['wm_padding']  = '20';<br />
+<br />
+$this->image_lib->initialize($config);
+<br />
+<br />
+$this->image_lib->watermark();</code>
+
+
+<p>The above example will use a 16 pixel True Type font to create the text "Copyright 2006 - John Doe".  The watermark
+will be positioned at the bottom/center of the image, 20 pixels from the bottom of the image.</p>
+
+<p class="important"><strong>Note:</strong> In order for the image class to be allowed to do any processing, the image file must have &quot;write&quot; file permissions. For example, 777.</p>
+
+
+<h2>Watermarking Preferences</h2>
+
+<p>This table shown the preferences that are available for both types of watermarking (text or overlay)</p>
+
+<table cellpadding="0" cellspacing="1" border="0" style="width:100%" class="tableborder">
+<tr>
+<th>Preference</th>
+<th>Default&nbsp;Value</th>
+<th>Options</th>
+<th>Description</th>
+</tr>
+
+<tr>
+<td class="td"><strong>wm_type</strong></td>
+<td class="td">text</td>
+<td class="td">text, overlay</td>
+<td class="td">Sets the type of watermarking that should be used.</td>
+</tr>
+
+<tr>
+<td class="td"><strong>source_image</strong></td>
+<td class="td">None</td>
+<td class="td">None</td>
+<td class="td">Sets the source image name/path.  The path must be a relative or absolute server path, not a URL.</td>
+</tr>
+
+<tr>
+<td class="td"><strong>dynamic_output</strong></td>
+<td class="td">FALSE</td>
+<td class="td">TRUE/FALSE (boolean)</td>
+<td class="td">Determines whether the new image file should be written to disk or generated dynamically.  Note: If you choose the dynamic setting, only one image can be shown at a time, and it can't be positioned on the page. It simply outputs the raw image dynamically to your browser, along with image headers.</td>
+</tr>
+
+<tr>
+<td class="td"><strong>quality</strong></td>
+<td class="td">90%</td>
+<td class="td">1 - 100%</td>
+<td class="td">Sets the quality of the image. The higher the quality the larger the file size.</td>
+</tr>
+
+<tr>
+<td class="td"><strong>padding</strong></td>
+<td class="td">None</td>
+<td class="td">A number</td>
+<td class="td">The amount of padding, set in pixels, that will be applied to the watermark to set it away from the edge of your images.</td>
+</tr>
+
+<tr>
+<td class="td"><strong>wm_vrt_alignment</strong></td>
+<td class="td">bottom</td>
+<td class="td">top, middle, bottom</td>
+<td class="td">Sets the vertical alignment for the watermark image.</td>
+</tr>
+
+<tr>
+<td class="td"><strong>wm_hor_alignment</strong></td>
+<td class="td">center</td>
+<td class="td">left, center, right</td>
+<td class="td">Sets the horizontal alignment for the watermark image.</td>
+</tr>
+
+<tr>
+<td class="td"><strong>wm_hor_offset</strong></td>
+<td class="td">None</td>
+<td class="td">None</td>
+<td class="td">You may specify a horizontal offset (in pixels) to apply to the watermark position. The offset normally moves the watermark to the right, except if you have your alignment set to "right" then your offset value will move the watermark toward the left of the image.</td>
+</tr>
+
+<tr>
+<td class="td"><strong>wm_vrt_offset</strong></td>
+<td class="td">None</td>
+<td class="td">None</td>
+<td class="td">You may specify a vertical offset (in pixels) to apply to the watermark position. The offset normally moves the watermark down, except if you have your alignment set to "bottom" then your offset value will move the watermark toward the top of the image.</td>
+</tr>
+
+</table>
+
+
+
+<h3>Text Preferences</h3>
+<p>This table shown the preferences that are available for the text type of watermarking.</p>
+
+
+<table cellpadding="0" cellspacing="1" border="0" style="width:100%" class="tableborder">
+<tr>
+<th>Preference</th>
+<th>Default&nbsp;Value</th>
+<th>Options</th>
+<th>Description</th>
+</tr>
+
+<tr>
+<td class="td"><strong>wm_text</strong></td>
+<td class="td">None</td>
+<td class="td">None</td>
+<td class="td">The text you would like shown as the watermark.  Typically this will be a copyright notice.</td>
+</tr>
+
+<tr>
+<td class="td"><strong>wm_font_path</strong></td>
+<td class="td">None</td>
+<td class="td">None</td>
+<td class="td">The server path to the True Type Font you would like to use.  If you do not use this option, the native GD font will be used.</td>
+</tr>
+
+<tr>
+<td class="td"><strong>wm_font_size</strong></td>
+<td class="td">16</td>
+<td class="td">None</td>
+<td class="td">The size of the text.  Note: If you are not using the True Type option above, the number is set using a range of 1 - 5.  Otherwise, you can use any valid pixel size for the font you're using.</td>
+</tr>
+
+<tr>
+<td class="td"><strong>wm_font_color</strong></td>
+<td class="td">ffffff</td>
+<td class="td">None</td>
+<td class="td">The font color, specified in hex.  Note, you must use the full 6 character hex value (ie, 993300), rather than the three character abbreviated version (ie fff).</td>
+</tr>
+
+
+<tr>
+<td class="td"><strong>wm_shadow_color</strong></td>
+<td class="td">None</td>
+<td class="td">None</td>
+<td class="td">The color of the drop shadow, specified in hex. If you leave this blank a drop shadow will not be used. Note, you must use the full 6 character hex value (ie, 993300), rather than the three character abbreviated version (ie fff).</td>
+</tr>
+
+<tr>
+<td class="td"><strong>wm_shadow_distance</strong></td>
+<td class="td">3</td>
+<td class="td">None</td>
+<td class="td">The distance (in pixels) from the font that the drop shadow should appear.</td>
+</tr>
+
+</table>
+
+
+
+
+<h3>Overlay Preferences</h3>
+<p>This table shown the preferences that are available for the overlay type of watermarking.</p>
+
+
+<table cellpadding="0" cellspacing="1" border="0" style="width:100%" class="tableborder">
+<tr>
+<th>Preference</th>
+<th>Default&nbsp;Value</th>
+<th>Options</th>
+<th>Description</th>
+</tr>
+
+<tr>
+<td class="td"><strong>wm_overlay_path</strong></td>
+<td class="td">None</td>
+<td class="td">None</td>
+<td class="td">The server path to the image you wish to use as your watermark. Required only if you are using the overlay method.</td>
+</tr>
+
+<tr>
+<td class="td"><strong>wm_opacity</strong></td>
+<td class="td">50</td>
+<td class="td">1 - 100</td>
+<td class="td">Image opacity. You may specify the opacity (i.e. transparency) of your watermark image. This allows the watermark to be faint and not completely obscure the details from the original image behind it. A 50% opacity is typical.</td>
+</tr>
+
+<tr>
+<td class="td"><strong>wm_x_transp</strong></td>
+<td class="td">4</td>
+<td class="td">A number</td>
+<td class="td">If your watermark image is a PNG or GIF image, you may specify a color on the image to be "transparent". This setting (along with the next) will allow you to specify that color. This works by specifying the "X" and "Y" coordinate pixel (measured from the upper left) within the image that corresponds to a pixel representative of the color you want to be transparent.</td>
+</tr>
+
+<tr>
+<td class="td"><strong>wm_y_transp</strong></td>
+<td class="td">4</td>
+<td class="td">A number</td>
+<td class="td">Along with the previous setting, this allows you to specify the coordinate to a pixel representative of the color you want to be transparent.</td>
+</tr>
+</table>
+
+</div>
+<!-- END CONTENT -->
+
+
+<div id="footer">
+<p>
+Previous Topic:&nbsp;&nbsp;<a href="table.html">HTML Table Class</a>
+&nbsp;&nbsp;&nbsp;&middot;&nbsp;&nbsp;
+<a href="#top">Top of Page</a>&nbsp;&nbsp;&nbsp;&middot;&nbsp;&nbsp;
+<a href="../index.html">User Guide Home</a>&nbsp;&nbsp;&nbsp;&middot;&nbsp;&nbsp;
+Next Topic:&nbsp;&nbsp;<a href="input.html">Input Class</a>
+</p>
+<p><a href="http://codeigniter.com">CodeIgniter</a> &nbsp;&middot;&nbsp; Copyright &#169; 2006-2008 &nbsp;&middot;&nbsp; <a href="http://ellislab.com/">Ellislab, Inc.</a></p>
+</div>
+
+</body>
 </html>
\ No newline at end of file
